package com.irdstudio.efp.esb.api.bean.sed.repay;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.irdstudio.basic.framework.core.annotation.BeanMapKey;
import com.irdstudio.basic.framework.core.annotation.DicType;
import com.irdstudio.basic.framework.core.annotation.NumType;
import com.irdstudio.basic.framework.core.constant.SDicCertTypeEnum;
import com.irdstudio.basic.framework.core.constant.SDicChannelType;
import com.irdstudio.efp.esb.api.common.sed.SedEnum;
import com.irdstudio.efp.esb.api.common.sed.SetlType;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.lang.NonNull;

import javax.validation.Valid;
import javax.validation.constraints.Digits;

/**
* 普税贷产品对税e贷产品的此部分代码做了复用
* 说明：为了保证功能的复用性、提升开发的工作效率，对该代码进行了复用
* 评估是否会影响线上功能：否
* 评估时间：2020/5/25
* 处理方案：保留复用
*/

/**
 * 需求编号：【2019D0519】（业务提的需求编号）
 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
 * 开发人员：qiuyf
 * 创建日期：2019年5月7日 上午10:22:21
 * 功能描述：主动还款申请请求实体类
 */
public class ReqActiRepayApplyBean {

	@BeanMapKey("RpyAppFlowNo")
	@JsonProperty("RpyAppFlowNo")
	@NonNull
	@NotEmpty
	@Length(max = 32)
	private String RpyAppFlowNo;	//还款申请流水号
	
	@BeanMapKey("DblNo")
	@JsonProperty("DblNo")
	@NonNull
	@NotEmpty
	@Length(max = 64)
	private String DblNo;	//借据号
	
	@BeanMapKey("RpyDt")
	@JsonProperty("RpyDt")
	@NonNull
	@NotEmpty
	@Length(max = 10)
	private String RpyDt;	//还款日期
	
	@BeanMapKey("RpyType")
	@JsonProperty("RpyType")
	@NonNull
	@NotEmpty
	@Length(max = 5)
	@DicType(dicType = SetlType.class, method = "getType")
	private String RpyType;	//还款类型
	
	@BeanMapKey("RpyAmt")
	@JsonProperty("RpyAmt")
	@NonNull
	@NotEmpty
	@Digits(integer = 16,fraction = 2,message = "RpyAmt 数字校验异常")
	private String RpyAmt;	//还款金额
	
	@BeanMapKey("RpyPrin")
	@JsonProperty("RpyPrin")
	@NonNull
	@NotEmpty
	@NumType
	@Digits(integer = 16,fraction = 2,message = "RpyPrin 数字校验异常")
	private String RpyPrin;	//还款本金
	
	@BeanMapKey("TotRpyTerm")
	@JsonProperty("TotRpyTerm")
	@NumType
	@Length(max = 10)
	private String TotRpyTerm;	//总还款期数（提前按期次还款时必输）
	
	@BeanMapKey("RpyRsn")
	@JsonProperty("RpyRsn")
	@Length(max = 128)
	private String RpyRsn;	//还款原因
	
	@BeanMapKey("CertTp")
	@JsonProperty("CertTp")
	@NonNull
	@NotEmpty
	@Length(max = 10)
	@DicType(dicType = SDicCertTypeEnum.class, method = "getValue")
	private String CertTp;	//证件类型
	
	@BeanMapKey("CertNo")
	@JsonProperty("CertNo")
	@NonNull
	@NotEmpty
	@Length(max = 32)
	private String CertNo;	//证件号码
	
	@BeanMapKey("CustNm")
	@JsonProperty("CustNm")
	@NonNull
	@NotEmpty
	@Length(max = 128)
	private String CustNm;	//客户姓名
	
	@BeanMapKey("ChanNo")
	@JsonProperty("ChanNo")
	@NonNull
	@NotEmpty
	@Length(max = 5)
	@DicType(dicType = SDicChannelType.class, method = "getValue")
	private String ChanNo;	//渠道号
	
	@BeanMapKey("RpyPlanChgMd")
	@JsonProperty("RpyPlanChgMd")
	@Length(max = 1)
	@DicType(dicType = SedEnum.ModifyMode.class, method = "getValue")
	private String RpyPlanChgMd;	//变更方式
	
	@BeanMapKey("IntSetInfArry")
	@JsonProperty("IntSetInfArry")
	@Valid
	private ReqIntSetBean[] IntSetInfArry;  //结算信息数组

	public String getRpyAppFlowNo() {
		return RpyAppFlowNo;
	}

	public void setRpyAppFlowNo(String rpyAppFlowNo) {
		RpyAppFlowNo = rpyAppFlowNo;
	}

	public String getDblNo() {
		return DblNo;
	}

	public void setDblNo(String dblNo) {
		DblNo = dblNo;
	}

	public String getRpyDt() {
		return RpyDt;
	}

	public void setRpyDt(String rpyDt) {
		RpyDt = rpyDt;
	}

	public String getRpyType() {
		return RpyType;
	}

	public void setRpyType(String rpyType) {
		RpyType = rpyType;
	}

	public String getRpyAmt() {
		return RpyAmt;
	}

	public void setRpyAmt(String rpyAmt) {
		RpyAmt = rpyAmt;
	}

	public String getRpyPrin() {
		return RpyPrin;
	}

	public void setRpyPrin(String rpyPrin) {
		RpyPrin = rpyPrin;
	}

	public String getTotRpyTerm() {
		return TotRpyTerm;
	}

	public void setTotRpyTerm(String totRpyTerm) {
		TotRpyTerm = totRpyTerm;
	}

	public String getRpyRsn() {
		return RpyRsn;
	}

	public void setRpyRsn(String rpyRsn) {
		RpyRsn = rpyRsn;
	}

	public String getCertTp() {
		return CertTp;
	}

	public void setCertTp(String certTp) {
		CertTp = certTp;
	}

	public String getCertNo() {
		return CertNo;
	}

	public void setCertNo(String certNo) {
		CertNo = certNo;
	}

	public String getCustNm() {
		return CustNm;
	}

	public void setCustNm(String custNm) {
		CustNm = custNm;
	}

	public String getChanNo() {
		return ChanNo;
	}

	public void setChanNo(String chanNo) {
		ChanNo = chanNo;
	}
	
	public String getRpyPlanChgMd() {
		return RpyPlanChgMd;
	}

	public void setRpyPlanChgMd(String rpyPlanChgMd) {
		RpyPlanChgMd = rpyPlanChgMd;
	}

	public ReqIntSetBean[] getIntSetInfArry() {
		return IntSetInfArry;
	}

	public void setIntSetInfArry(ReqIntSetBean[] intSetInfArry) {
		IntSetInfArry = intSetInfArry;
	}
	
}
